'''
框架日志实现思路:
  1. 首先通过logging对象获取实例化日志对象
  2. 设置日志的记录级别
  3. 设置日志的处理方式
  4. 设置记录日志的格式
  5. 将格式器设置到处理器中
  6. 将处理器添加至日志对象
'''
import logging;
from logging import StreamHandler,FileHandler,Formatter;
import datetime;

def get_log_pro():

    #1. 首先通过logging对象获取实例化日志对象  logging对象的getLogger方法生成一个日志对象
    log_pro = logging.getLogger("框架日志对象");

    #2. 设置日志的记录级别  debug 调试级别   info 普通级别  warning 警告级别(默认)   error 错误级别
    #                     critical致命级别
    #logging.basicConfig(level=logging.DEBUG)
    log_pro.setLevel(logging.DEBUG)

    #3. 设置日志的处理方式   方式一: 将日志信息输出在控制台   方式二: 将日志写入指定的日志文件中
    #设置日志处理器: 流处理器(输出在控制台中)
    s_h = StreamHandler();

    #通过代码获取系统当前日期
    log_file_name = str(datetime.datetime.now()).split(" ")[0]
    #设置日志处理器: 文件处理器(将日志信息写入到指定的日志文件中)  在该方法中传入写入的文件路径
    f_h = FileHandler("../logs_floor/"+log_file_name+".log",encoding="utf-8");

    #4. 设置记录日志的格式   Formatter对象-的关键词:asctime 获取系统当前时间  name 日志对象名称
    # levelname 日志级别名称    filename 日志产生的文件名称   lineno 日志在文件中产生的行号
    formatter = Formatter("%(asctime)s---%(name)s---%(levelname)s---%(filename)s:%(lineno)d---%(message)s");

    #5. 将格式器设置到处理器中
    s_h.setFormatter(formatter);
    f_h.setFormatter(formatter);

    #6. 将处理器添加至日志对象
    log_pro.addHandler(s_h);
    log_pro.addHandler(f_h);

    #7. 将自定义好的日志对象返回，给其他的层进行调用
    return log_pro;


